In addition to the answers that have already been provided, I think that it is worth mentioning that STD_LOGIC is what is called a resolved type, that means that there is a priority to the signal. For example, 1 and 0 have a higher priority to H or L so if a signal was driven with an L and a 1 simultaneously, the output would be high (logic 1) because 1 has a higher priority than L.
It just so happens that the order you have listed the values in, in your question is the order of the priority, the one caveat is that some values have equal priority and so if you drive them with both of those signals there is no clear "winner" so the result is the next "unknown" state ('X' or 'W') up the hierarchy, a simple example is if a signal is driven with an 'H' and an 'L', the result will be 'W'.
The resolution table for STD_LOGIC looks something like this:
-- ---------------------------------------------------------
-- | U X 0 1 Z W L H - | |
-- ---------------------------------------------------------
( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- | U |
( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), -- | X |
( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ), -- | 0 |
( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ), -- | 1 |
( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ), -- | Z |
( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ), -- | W |
( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ), -- | L |
( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ), -- | H |
( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ) -- | - |