J, 11 bytes
(".@|.":)~-
How it works
Uses @Bubbler's tacit trick for (F x) G (H y) = (G~F)~H.
(".@|.":)~-
- negate y to shift right
( )~ flip arguments, so ((-y) ".@|. (":x))
": convert x to string
|. shift that by negated y
".@ and convert back to number
J, 11 bytes
(".@|.":)~-
How it works
Uses @Bubbler's tacit trick for (F x) G (H y) = (G~F)~H.
(".@|.":)~-
- negate y to shift right
( )~ flip arguments, so ((-y) ".@|. (":x))
": convert x to string
|. shift that by negated y
".@ and convert back to number