Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between !( i%2) vs (i%2 == 0)?

for (i=0;i<10;i++) {
if (i%2 == 0)
console.log( i + "is even number")
else
console.log(i + "is not even")

}

working, but

for (i=0;i<10;i++) {
if (!i%2)
console.log( i + "is even number")
else
console.log(i + "is not even")

}

not working , why ? and when would i%2 becomes true ?

like image 627
Srujan Avatar asked Jan 29 '26 02:01

Srujan


2 Answers

Try following

for (i=0;i<10;i++) {
if (!(i%2))
console.log( i + "is even number")
else
console.log(i + "is not even")
}

You need to look at operator precedence

What went wrong?

As per operator precedence !i%2 is evaluated as (!i)%2 Hence, for every value of i greater than 0, !i becomes false and false%2 is 0

like image 79
Nikhil Aggarwal Avatar answered Jan 30 '26 16:01

Nikhil Aggarwal


Because the logical NOT (!) operator takes precedence over the remainder operator (%). So your code is actually evaluated as:

((!i)%2)

Which will always return false (except when i is 0).

Try this instead:

if (!(i%2))

See Operator Precedence

like image 35
haim770 Avatar answered Jan 30 '26 16:01

haim770



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!