Does && has higher precedence than || in if?

1 view (last 30 days)
Recently I used:
if p==0&&q==0&&r==0||p==0&&q==0||q==0&&r==0||p==0&&r==0
if p>=0&&q>=0&&r>=0||p<=0&&q<=0&&r<=0
if a>0&&b>0&&c>0||d>0&&e>0&&f>0
if g>0&&h>0
whereas I actually mean:
if (p==0&&q==0&&r==0)||(p==0&&q==0)||(q==0&&r==0)||(p==0&&r==0)
if (p>=0&&q>=0&&r>=0)||(p<=0&&q<=0&&r<=0)
if (a>0&&b>0&&c>0)||(d>0&&e>0&&f>0)
if (g>0&&h>0)
The problem is I have done months of calculations without brackets, thingking && has higher precedence than . Now I just reflected: is it true? Was my code right?
Please tell me if my code was correct without brackets or not before I publish my calculation results. This is a serious matter to me if not; I'm really worried.
P.S. I'm aware of short circuits.
  3 Comments
Guillaume
Guillaume on 15 Jan 2016
It is also trivial to check for yourself:
0 && 0 || 1
If it returns 1, it means it's been evaluated as
(0 && 0) || 1
If it returns 0, it's been evaluated as
0 && (0 || 1)
the cyclist
the cyclist on 15 Jan 2016
This test does not distinguish between the following two rules:
  • && has precedence over ||
  • && and || have equal precedence, with left-to-right evaluation

Sign in to comment.

Accepted Answer

the cyclist
the cyclist on 15 Jan 2016
According to this page about order precedence, && does indeed have precedence over ||.

More Answers (0)

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!