Start here. This is the direct spoken answer to practice first.
Why this question matters
Single responsibility is useful when it reveals unrelated reasons for change. Applied mechanically, it can replace one oversized class with a maze of tiny types that is harder to understand.
I would separate responsibilities by cohesive reasons for change, not by method count. Order pricing and validation belong with business rules, persistence belongs behind the data boundary, and email or analytics are external effects. An application service can still coordinate those collaborators because orchestration is one clear responsibility. I would keep behavior together when it changes for the same business reason.