It actually might have to do with short circuit vs long boolean algebra.
In some languages, "&" is long boolean algebra and "&&" is short circuit (or maybe the other way around)...
Usually it doesn't matter which one you use... the difference is that in short circuit, the language stops evaluating the expression as soon as it "knows" it will be false, whereas with long it does the whole thing anyways.
IE.
Term1=false;
Term2=true;
if(Term1 AND Term2)
in long -- stops after it looks at Term1 and Term2.
in short -- stops after it looks at Term1
The only time this matters is if you are actually changing something WITHIN the expression....
An example...
If you were using short circuit with something like:
if(Term1 && Index--!=0)
Usually this structure would mean you ALWAYS wanted to decrement Index... but with short circuit the decrement will ONLY get done of Term1 evaluates to true.
Does that makes sense?