In addition to the answers that have already been provided, I find it worth mentioning that STD_LOGIC is what is called an allowed type, which means that the signal takes precedence. For example, 1 and 0 have a higher priority for H or L, so if the signal is controlled with L and a 1 at the same time, the output will be high (logical 1), since 1 has a higher priority than L.
It just so happens that in the order in which you indicated the values, the priority order is indicated in your question, one of the caveats is that some values have the same priority, and therefore, if you conduct them with both of these signals, there is no clear “winner”, so the result is the following “unknown” state (“X” or “W”) in the hierarchy, a simple example: if the signal is controlled with “H” and “L”, the result will be “W”.
The permissions table for STD_LOGIC looks something like this:
-- --------------------------------------------------------- -- | UX 0 1 ZWLH - | | -- --------------------------------------------------------- ( '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' ) -- | - |