Comments are one of the secrets to maintainable code. Your code will inevitably fall short of the ideal of completely explaining itself, so not adding comments is basically racking up tech debt.
That's true for most languages. However, some languages are so well designed for maintainability that they barely need verbose comments. Ada is such a language. I have no problems to understand my own Ada code written 10 years ago. However, I had difficulties to understand my own Haskell code just one week later :-)