Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I guess some of this knowledge is helpful or necessary for people who want to know JS inside-out. Nevertheless, none of that code looked like anything a programmer would write if they respected readability and conveyance of code. Maybe I'm just taking things too seriously here...

A code snippet like the following wouldn't make me ask how it works, but it would make me want to find the person responsible for putting this snippet in production code:

var num1 = 5, num2 = 10, result = num1+++num2;

(I'm probably thinking in this manner these days because I'm currently in a situation where I'm maintaining someone else's code instead of building something.)



The above example is at least academically interesting since you can reason through it with a bit of programming experience and intuition about operator precedence.

    Does plus or pre/postfix increment have higher precedence?
    Probably increment.
    Does prefix or postfix have higher precedence?
    They're probably the same -> evaluate from left-to-right.
    Code is equivalent to num1++ + num2;

But the examples like "what is the difference between substring() and substr()", "What is the lowest cross-browser increment that [setInterval()/setTimeout()] can accurately use" is just trivia and is boring.


You also need to know how tokens are produced by lexical analysis. It could have produced:

  'num1' '+' '++' 'num2'
In fact it produces

  'num1' '++' '+' 'num2'
so it's not about evaluate from left-to-right.


Is there a case in JavaScript where operators with the same precedence are not evaluated left-to-right?


I don't know. But I happen to know that the javascript tokenizer matches the longest possible substring. Therefore it takes '++' from '+++..', not '+'. It's not about precedence.

EDIT: Yes, the assignment operators, =, += etc., evaluates right to left.




Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: