Thai negation is pleasingly simple: drop ไม่ or อย่า before the verb. But each particle has a distinct job.
ไม่
mai (falling tone)
ไม่ไป — not going · ไม่ดี — not good · ไม่รู้ — don't know · ไม่ใช่ — is not (identity)
Works with almost any verb or adjective. The most-used negator.
ไม่ได้
mâi dâi (both falling)
ไม่ได้ไป — didn't go / haven't gone / didn't get to go · ไม่ได้กิน — didn't eat / haven't eaten · ไม่ได้ทำ — didn't do it / haven't done it
Word order matters. ไม่ได้ + verb means the action did not happen, or an assumption is being denied (ไม่ได้โกรธ — I'm not angry). verb + ไม่ได้ means the action cannot be done: ไปไม่ได้ — can't go. Compare: ไม่ไป (not going / won't go) · ไม่ได้ไป (didn't go / haven't gone) · ไปไม่ได้ (can't go) · ไม่ได้จะไป (wasn't going to go).
อย่า
yaa
อย่าไป — don't go · อย่าลืม — don't forget
Only for commands. Soften with นะ: อย่าไปนะ = please don't go.
ยังไม่
yang mâi + verb / adjective
ยังไม่ไป — haven't gone yet / not going yet · ยังไม่กิน — haven't eaten yet · ยังไม่พร้อม — not ready yet
ยัง (still) + ไม่ (not), then the verb or adjective. Thai does not fix the tense: ยังไม่ไป can be 'haven't gone yet' or 'not going yet'. Contrast: กินแล้ว (have eaten / already ate) ↔ ยังไม่กิน (haven't eaten yet). In speech, ยัง on its own answers a question: กินแล้วหรือยัง — ยัง (not yet).
Quick cheat sheet
Present/future: ไม่ + verb
Did not / have not: ไม่ได้ + verb
Cannot: verb + ไม่ได้
Command: อย่า + verb
Not yet: ยังไม่ + verb