It's easy to confuse operator precedence with order of evaluation. Operator
precedence only decides how operators match with operands, not the order
they are evaluated.
You are correct that the precedence of postfix is higher than dereference.
But that only tells you *d++ should be *(d++) but not (*d)++. This does not
conflict with the fact that postfix is evaluated after the statement.
Hope that helps.