case "yellow" or "orange":
or is a boolean operator, so its operands are cast to booleans if they aren't already.
"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.