Reassigning changes a variable's value. Redeclaring tries to create it again:
let x = 5
x = 10 // Reassigning - OK
let x = 15 // Redeclaring - Error!
Once declared with let or const, you can't declare the same name again in the same scope. This prevents accidental overwrites.
In the browser console, redeclaring sometimes works because each line runs in its own context. Real scripts don't allow it.