For those who are getting confused on the 2nd property, which is :
"For any two letters of the same frequency, the letter which occurs earlier in the dictionary order is assigned a code whose length is at most the length of the code assigned to the other letter."
Everything revolves around the word: "at most in the statement".
At most means ' <= ' . So that means which ever letter/alphabet is coming first in the dictionary order will be assigned a codeword of length "at most" OR ' <= ' the length of the codeword assigned to the other letter which comes afterwards in the dictionary order.
So this implies: len of code('d') >= len of code('c') >= len of code('b').