да, это ожидаемое поведение,
давайте рассмотрим другой пример.просто добавив два класса,
<ul>
<li class="item first">item</li>
<li class="item">item</li>
<li class="item">item</li>
<li class="item">item</li>
<li class="item last">item</li>
</ul>
здесь класс сначала также идет вместе с элементом класса.но если мы объявим наш CSS в неправильном порядке, который не даст желаемого поведения
.first { background: blue; }
.item { background: red; }
, как вы можете видеть, будет использован последний соответствующий селектор.это то же самое, что и ваш пример, не важно, что логичнее, 2 псевдокласса считаются равными, поэтому одни и те же правила применяют последние соответствующие выигрыши в определении.
edit
псевдоклассы равны, побеждает тот, который определен последним!вот jsFiddle, который подтверждает мою точку зрения: ссылка определена после: hover,: link wins ( test ), поэтому ваше утверждение: hover overriding: ссылка неверна, ее точно так же, как с: active, еевсе о заказе.