Essa implementação utiliza uma Engine que já está no Java, você teria que analisar o código dela pra saber como ela funciona. Pelo que sei tem outras bibliotecas open source que fazem isso, você pode analisar o código.
Como o @staroski disse, fazer isso não é algo trivial, principalmente se você quiser avançar fazendo coisas como “(3+(5*3))/2” e “7+(3^9) / squareRoot(144)” , etc…
Mas se você estiver mesmo determinado a implementar isso, recomendo fazer usando TDD, de forma incremental. Mas como você disse que está no início,. pode não ser uma boa ideia se lançar a fazer uma coisa dessas.
Se você só quer fazer coisas simples como “3+5*2”, sem parênteses, calculando tudo na ordem que aparece (esquerda para direita), apenas com operadores +-/*, então fica bem mais fácil. Deve dá pra fazer com um método recursivo, que recebe a expressão, a simplifica resolvendo uma parte dela, e envia a ele mesmo ela simplificada. Aí ele vai simplificando até terminar de resolvê-la.