AND OR order of operations
A good way to remember this is to think of it mathematically.
AND
as*
(multiply)OR
as+
(addition)TRUE
as1
FALSE
as0
So thinking of it as simple math you get this:
0 * 0 = 0
1 * 0 = 0
1 * 1 = 1
0 + 0 = 0
1 + 0 = 1
1 + 1 = 1
Only thing that may be a tiny bit confusing is 1 + 1 = 1
, but a bit can't go above 1
. But it makes sense if you think of 1
as any non-zero number.
So with this in mind you can then apply this logic:
if(cond1 AND cond2 AND cond3 OR cond4 AND cond5 AND cond6)
Becomes:
if(cond1 * cond2 * cond3 + cond4 * cond5 * cond6)
See: https://en.wikipedia.org/wiki/Order_of_operations
In most languages AND
is evaluated first,
hence
if((cond1 AND cond2 AND cond3) OR (cond4 AND cond5 AND cond 6))
is the right choice.
For C#, See http://msdn.microsoft.com/en-us/library/aa691323%28v=vs.71%29.aspx
For C, See http://en.cppreference.com/w/cpp/language/operator_precedence
For Java , See http://bmanolov.free.fr/javaoperators.php
In the normal set of boolean connectives (from a logic standpoint), and
is higher-precedence than or
, so A or B and C
is really A or (B and C)
. Wikipedia lists them in-order. Most programming languages should obey this convention unless they are really weird.
That said, for your particular language or environment it should be possible to concoct a very small test to satisfy yourself that it is one way or the other :)