A good way to remember this is to think of it mathematically.
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)
if(cond1 * cond2 * cond3 + cond4 * cond5 * cond6)
In most languages
AND is evaluated first,
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
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 🙂