Think of the a in .domain([a, b]) as the smallest value that will be visible on your chart. That value represents the top of the first rectangle. Of course, you’d like to see more than just the top of your rectangle, so it makes sense to set the a value in your domain to be something lower than d3.min(dataset, (d) => d[1]). Since your vertical axis starts at zero, why not just set a to 0?

Addressing your last concern (more like three concerns, really)…

Take some time to play around with D3 bar charts, and come back to this project after you’re comfortable with how things work. Brad Traversy has a decent series on beginning with D3. Check out videos 5 and 6 in the series; they’re the most relevant for your situation.