The logical operators are generally used with Boolean values and, when they are, they return a Boolean value. However, both && and || actually return the value of one of their operands, so if the relevent operand is not a Boolean value, the operator may return a non-Boolean value.
This is the logical NOT operator which returns false if its single operand can be converted to true, or if it is a non-Boolean value and true if its operand can be converted to false.