Precedence grammar, a special kind of EBNF with precedence between its operators, is introduced in this paper. Programming languages defined in precedence grammars often look simpler, more compact and readable than those defined in other grammars. Actually, this kind of grammar was used early when IEEE published ATLAS--a large test language in 1995, which lead to a great decrease in language size compared to BNF notation, so sometime precedence grammar may be a good choice for defining large programming languages. For the sake of convenient compiler design from these grammars, two algorithms converting precedence grammars to other forms and their correctness discussions are also given in section 3 and section 4.