When you have boolean operations, the compiler start check the one by the other, and stop when its sure for the results - for example if you ask
if(a && b && c)
{
}
if a is false, then the boolean is false, and compiler did not need to check b and c. This compiler future is used to short the writing code for some cases.
This is (for me) a bad practice that writing code.
!variable && function()
instide of
if(!variable) function();
try to minimize the size of the javascript ?
Dificult to debug, and dificult to find what actually dose in many cases.
See this similar code.
unsigned uCycleCheckBox(unisgned uCur)
{
return ((uCur <= 1) ? (uCur?0:1) : (uCur==4)?2:(uCur+1));
}
is the same think... hard to understand, hard to debug, hard to change and fix in case of problems.
For the comments on that, I suggest to read the books, Writing Solid Code, and Debbuging the deveopment process.
Writing solid code is more important than enything else.