complex not(!) conditions

complex not(!) conditions

Hey guys , 

can you checkout the below if conditions , they make extendsive use of the not operator and i am a little confused as to what really are they checking for : 

Example One : 

  1. if ((!target.length || index < 0) && o.loop == f) {
  2.    // do somethng 
  3. }

i really don't understand this not operator , under what circumstance would the below condition : 

  1. !target.length
return true or false ?? 

  1. if (!ul.queue('fx').length) {
  2.   // do something
  3. }

under what circumstance would the above condition return true or false ?? (i understand the queue function .. but once again i don't understand under what circumstance would the condition return true or false) . 

for example if the condition was something like the below : 

  1. if(!ul.queue('fx').length == 0){
  2.    // do something

i would totally get it , but somehow i don't understand those examples i have given , can somebody explain ? 

Thanks .