! negates the result of whatever is on the right. So !! negates the negated value thus ending with whatever was originally on the right.
edit: the above is true if you have boolean values, results may vary for other types ...
edit2 to elaborate some more: !! is a "type cast" operator of sorts. if you have a boolean value on the right then nothing will happen. If you have something other then a boolean value on the right, then the first ! will convert whatever is on the right to the boolean "version" of that value, and the second ! will negate that value.
Kinda like saying: return the true value of a non boolean value.
Hope that makes sense :)