s mp $ n - 1 parses as s mp (n - 1)
> s mp n - 1 parses as (s mp n) - 1

It should be

s mp $ n - 1 parses as ($) (s mp) (n - 1) which evaluates to s mp (n - 1)
The parsing goes this way because ($) has the lowers precedence.

--
Regards

Sumit Sahrawat