The main thing:  BUKAN negates the noun that comes right after it; TIDAK negates everything else.

"I am not a Japanese person." = "Saya bukan orang Jepang."
        BECAUSE:  the thing being negated is "orang Jepang," and "orang" is a NOUN.

"I do not live in Japan." = "Saya tidak tinggal di Jepang."
        BECAUSE:  the thing being negated is "tinggal di Jepang," and "tinggal" is NOT A NOUN.

Some Common Mistakes in using BUKAN and TIDAK

Apakah Anda tinggal di Jepang? "Do you live in Japan?"

SALAH ("WRONG"):  Saya bukan tinggal di Jepang.


TIDAK, SAYA TINGGAL DI KOTA DEKALB. (="No, I live in the city of DeKalb")
TIDAK, SAYA TIDAK TINGGAL DI JEPANG.(="No, I don't live in Japan.)

It's "tidak" because you are negating "tinggal di Jepang" and "tinggal" is not a noun.

Apakah Anda orang Indonesia? "Are you an Indonesian person?"

SALAH ("WRONG"): Bukan saya bukan orang Amerika.

SALAH ("WRONG"):  Bukan saya orang Indonesia


BUKAN, SAYA ORANG AMERIKA. (= "No, I'm an American person.")
BUKAN, SAYA BUKAN ORANG INDONESIA. (= "No, I am not an Indonesian person")

If you say "Bukan saya bukan orang Amerika," you're saying "No, I'm not an American person."
If you say "Bukan saya orang Indonesia," you're saying "No, I'm an Indonesian person."

The thing to remember is that there are actually three ways to answer yes/no questions:

Q. "Are you an Indonesian?"   "Apakah Anda orang Indonesia?"

1. Short:   A. "No."

2. Long:    A. "I'm not an Indonesian. I'm an American." 
                   "Saya bukan orang Indonesia.  Saya orang Amerika."

3. Combo:  A. "No, I'm not an Indonesian." or "No, I'm an American."
                       "Bukan, saya bukan orang Indonesia."  "Bukan, saya orang Amerika."

These are negative answers, but the same would work for possitive ones.