case "yellow" or "orange":
or
is a boolean operator, so its operands are cast to booleans if they aren't already. "yellow"
and "orange"
both get cast to true, so "yellow" or "orange"
is equivalent to true or true
which is in turn equivalent to true
. So that case will always succeed if the previous ones don't.
What you have is two separate cases.
case "yellow":
case "orange":