'rock' is different from 'paper' 'soda'is different from'paper'
So your condition will be true for both of those. They should be treated differently though.
NOT is quite difficult to wrap your head around. I suggest doing this instead:
!(matches any of the valid options) // fill in the condition
But you should also convince yourself of why it is that your condition doesn't work the way you want. Try to find values for userChoicethat make it turn true and false respectively (evaluate the expression manually, in your head)
Also, watch out for typos, computers are not forgiving about this.