I found this article[1] to be a great introduction to Pratt Parsing as well, it even ties into how it's actually a Shunting Yard algorithm in disguise[2].
[1]https://matklad.github.io/2020/04/13/simple-but-powerful-pra...
[2]https://matklad.github.io/2020/04/15/from-pratt-to-dijkstra....
Doc I read for introduction to the area: http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-e...
Quick little TS implementation: https://github.com/JacksonKearl/PrattParse
Above used in a cute little D&D dice rolling discord app (basically implementing a language with random variables as literals & first-class values): https://github.com/JacksonKearl/RollDice-Discord/