And which is somewhat semantically flawed as sending true or false should not be considered (if you are a purist) the same as sending HIGH or LOW
It works because if the operand is not bool, it is converted to bool using contextual conversion (standard C) and by (relatively) arbitrary convention and luck because the authors have selected the same value as true and false for HIGH and LOW)
If you care, this should be written as condition ? HIGH : LOW.