Background info to understand. When a HDD is made and Low-Level Formatted (you CANNOT do this at home!) it contains quite a bunch of excess capacity more than its rating. The controller on the HDD's own PC board allocates all the good space necessary for the rated capacity for use, and then sets aside as good spares the remaining excess, keeping track of all of it. During all normal use, the on-board system assesses the quality of the signals coming off the disk reads. If it detects poor signal quality it will copy that sector's data to a known good spare and use it as a substitute, marking the questionable one as Do Not Use. This all happens within the drive unit, and the OS never even knows about this - it only knows the drive keeps on working well with no errors. But the drive does keep track of how many spare good sectors it has used up. Eventually if the spare stock gets low, it sets an alarm in the SMART data on its own board. Any utility tool that checks the SMART data will see this and tell you that there is an advance warning to check out. This particular one means two things: for some unexplained reason, there have been a LOT of bad sectors that needed replacing; and, the stock of good spares is getting low, so the hidden process may NOT be able to keep saving your ass for much longer. So, replace this drive NOW before it turns into a disaster.
This is the ideal scenario. The result is that, entirely in the background and beyond the view of your OS, the HDD's on-board smarts have been monitoring your disk and making sure that potential problems from bad sectors have been avoided and you have lost NONE of your data. Two things can happen that disturb this scene. One is that a sector could go bad for some unknown reason and you just don't happen to try using it, so no read-and-check-it operation gets done there. It is undetected. The other is that whatever the problem is, it is so severe that the data actually is corrupt, not just hard to read. In that case the data copied from the failed sector to the known-good one will be bad, but at least your file will be usable (at least, likely it will) but with an error in it. If either of these happens, that is one way that Windows Scan Disk (which knows nothing of all this background activity) can find a "Bad Sector". Its way of handling that is to make NO attempt to recover the data. It will simply mark that sector in its own data tables as one to be avoided at all times.
One way to force a HDD to do a thorough complete survey of itself and fix EVERY questionable sector with this process is to do a Zero-Fill operation. That tells the HDD on-board system to use a built-in routine to write all zeros to each and every sector it is using, then read it back and test the signals for reliability. Any that are questionable will get substituted, just like the normal process. By the time it is finished and assuming there are not TOO many bad sector substitutions, ALL of the sectors it is using will be good. BUT you have destroyed all data that ever was on the drive. If you then use Windows' tools to Create a Partition and Format it, Windows will find ONLY good sectors, because that is all the HDD's system makes available. Windows never knows anything about the hidden stash of good spares, or the list of bad sectors the disk will not use.
How many bad before you worry? I'm not sure, and I assume it is a proportion of the disk space. The number may actually be displayed to you by the diagnostic test suites. I go by the SMART system info. It it is happy, so am I. If it says that too many have been substituted and the stock of good spares is running low, I believe that and replace the drive ASAP.