We present a declarative language, ${\cal PP}$, for the high-level specification of preferences between possible solutions (or trajectories) of a planning problem. This novel language allows users to elegantly express non-trivial, multi-dimensional preferences and priorities over such preferences. The semantics of ${\cal PP}$ allows the identification of most preferred trajectories for a given goal. We also provide an answer set programming implementation of planning problems with ${\cal PP}$ preferences.