Code without comments is very bad. There is no such thing as self documenting code. You have to consider who will be making modifications to the code after you, and that your comments sole purpose is to convey the fundamental design of your code.
document the purpose for the code, document the inputs and returns, document the algorithm steps when appropriate. Do not put a comment on every line. Just comment the unclear or potentially fuzzy bits.
also on a side note, if your code is slick and clever and requires a comment to explain it because it is complex and cryptic. You Failed!
Our life is frittered away by detail... simplify, simplify, simplify. --Henry David Thoreau